home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
archiver
/
lsize25.zip
/
LSIZE.DOC
< prev
next >
Wrap
Text File
|
1994-01-18
|
11KB
|
226 lines
01/18/94 LSIZE 2.5 - Archive File Sizer
-----------------------------------------------------------------------------
DESCRIPTION
-----------------------------------------------------------------------------
I originally wrote this program to backup very large .LZH files to floppy
disks. There were a few programs that allow you to physically split a file
into parts, but these programs proved to be inconvenient. I wanted a way to
split one archive into many smaller ones that are still readable by the
archiving program. This eliminates the need for rejoining "split" files or
spanning a file across several floppies. LSIZE works well for "sizing"
archives consisting of several smaller files (less than about 1Meg
(compressed) each.) Remember it is impossible to "size" an archive smaller
than its largest file.
I.E. If the largest file in the archive is say 4Megs and it is
compressed to, say, 1Meg -then you can size the archive no smaller than 1Meg.
Splitting up archives with files this large still requires splitting or
spanning. Luckily, 99% of archives (at least the ones I work with) don't
contain files this large so this program works fine. Finally, I was
persuaded to expand the original program to work with the popular ZIP and ARJ
formats as well as LZH.
NOTE: If you compress a single file and that file is still larger than your
target disk size - THIS PROGRAM WILL NOT WORK! (Luckily, this is not usually
the case.) In this case you have no other choice but to SPLIT this file
using one of the many programs for this purpose. (People using ZIP/ARJ
could also create multi-volume archives with their respective spanning
features)
The current version of the program should work with archives
generated by:
PKZIP version 2.04g,
LHA version 2.13,
ARJ version 2.41,
and their predecessors (I think).
NOTE: This program will not split up multi-volume or spanned
archives - attempting to do so can cause unpredictable results! This
program will not work with self-extracting EXE files.
-----------------------------------------------------------------------------
USAGE
-----------------------------------------------------------------------------
USAGE: Typing LSIZE alone will produce a help screen.
Command Line: LSIZE SourceFileName [TargetFileNamePrefix] MaxSize
where SourceFileName = name of the archive to be broken up.
TargetFileNamePrefix = prefix of files to be created.
= [defaults to source name].
MaxSize = maximum size(in bytes) of each output file.
= also accepts sizes: 1.44M, 720K, 1.2M, 360K.
EXAMPLES: To split up a file called YEAR.ZIP into files that will each
fit onto 720K floppy disks.
Type: LSIZE YEAR.ZIP 720K
This would produce a number of smaller files called YEAR1.ZIP, YEAR2.ZIP,
YEAR3.ZIP, ...and so on.
To split up a file called BIG.ARJ into smaller files each called
SMALLn.ZIP with a max size of 1.44M.
Type LSIZE BIG.ARJ SMALL 1.44M
Fairly straight forward - heh?
A FEW MORE THINGS: LSIZE will never overwrite files without your permission.
Should a file be placed in a position that it could be overwritten you
will be prompted: overwrite? (Y/N/G)
Y means YES overwrite this file!
G means YES overwrite this file and all subsequent files if needed.
ANSWERING WITH G MEANS YOU WILL NOT BE PROMPTED AGAIN if LSIZE needs
to overwrite another file - LSIZE WILL AUTOMATICALLY OVERWRITE!
Any other response means "NO! DO NOT overwrite!" at which point the
program is terminated and you will be returned to the DOS prompt.
LSIZE can only handle archives with no more than 4000 files...
Provided you have the RAM!
-----------------------------------------------------------------------------
TECHNICAL NOTES HOW LSIZE WORKS
-----------------------------------------------------------------------------
The following describes the basic algorithm used by LSIZE.
Suppose an archive file looks like this:
INFILE.TUT
----------------------------------------------------------------------
| A(2k)| B(7k)| C(5k)| D(3k)| E(1k)| F(3k)| G(6k)| H(3k)| I(8k)| J(2k) |
----------------------------------------------------------------------
The archive contains ten files named A,B,C,...J. Each files compressed
size is in parentheses. We now wish to size INFILE.TUT to smaller 10K files.
So we type LSIZE INFILE.TUT OUTFILE 10000 on the command line.
LSIZE reads through the archive and stores each file name in an array along
with its compressed size, and its relative position in the archive. Once all
the files are read, this array is sorted in decreasing order by file size.
So now our array would look like this:
I8, B7, G6, C5, D3, F3, H3, A2, J2, E1.
For simplicity: I'll call the 2K 'A' file, 'A2'; the 7K 'B' file, 'B7', and
so on. These files are now 'sized' to subfiles. We'll begin with subfile
#1. We must now determine which of the files will be placed in OUTFILE1.
LSIZE begins by searching the array for the largest file that will fit into
the target file size. In this case we want 10K files. So file I8 will be
the first file in OUTFILE1. We now mark off file I8 in the array as
belonging to subfile #1. File I8 will now be eliminated from further
searches. We now look for the next largest file in the array that will fit
into OUTFILE1 without causing it to go over 10K. This would be file A2.
OUTFILE1 now will contain files I8 and A2. Note that OUTFILE1 has reached
its 10K limit and no more files can be placed in it. Now we begin placing
files into OUTFILE2. The next largest file is B7 and it is marked for
OUTFILE2. The next largest file that will fit is D3. OUTFILE2 has now
reached the 10K limit. This process of assigning files into subfiles
continues until all the files have been assigned. The final subfile
assignments look like this:
OUTFILE1 OUTFILE2 OUTFILE3 OUTFILE4
-------- -------- -------- --------
I8 B7 G6 C5
A2 D3 F3 H3
E1 J2
Each of these subfiles is then written out to disk and this simple example is
complete. In reality, there is header information that is also contained
within each archive that must be accounted for when sizing. Making matters
worse these header sizes grow larger each time another file is assigned to
a subfile archive.
----------------------------------------------------------------------------
LEGAL STUFF
----------------------------------------------------------------------------
I am releasing this program into the public domain. There are no
licenses to buy or fees to pay. (Of course, if you insist -you can
send a donation to the address below!) There are also no guarantees
of any kind. USE THIS PROGRAM AT YOUR OWN RISK. You may distribute
this program freely provided that this file is included and the
program itself is unmodified. The only thing I ask is that you send
your comments, suggestions, or bug reports to me at:
L.S. Lewis email to
(Internet):
15 Marigold Lane OR larrylw@eden.rutgers.edu
Willingboro, NJ 08046-2812 <note: This account will
probably be closed as of
summer 1994 - I'm graduating!
Anyone need a good computer